var express = require('express')

var app = express()

// 中间件：处理请求的，本质就是个函数

// 在express中，对中间件有几种分类

// 在不关心请求路径和请求方法的中间件
// 也就是说任何请求都会进入这个中间件
// 中间件本身是一个方法，该方法接收三个参数
// request 请求对象
// response 响应对象
// next 下一个中间件
// 当一个请求进入一个中间件之后，如果不调用next则会停留在当前中间件
// 所以next是一个方法，用来调用下一个中间件的
// 调用next方法也是要匹配的（不是调用紧挨着的那一个）
// 当请求进来，会从第一个中间件开始进行匹配
    // 如果匹配，则进来
    // 如果请求进入中间件之后，没有调用next，则代码会停在当前当前中间件
    // 如果调用了next则继续向后找到第一个匹配的中间件
    // 如果不匹配，则继续判断匹配下一个中间件
// 除了以上中间件之外，还有一种最常用的
// 严格匹配请求方法和请求路径的中间件 
// app.get
// app.use
// 浏览器路径输入什么，就打印什么，比如说输入http://127.0.0.1:3000，就打印'/';输入http://127.0.0.1:3000/a，就打印'/a'

app.get('/',function(req,res,next){
    console.log('/')
    // res.send('当前时间:',Date.now())
    console.log('当前时间:',Date.now())
})

// app.get('/a',function(req,res,next){
//     console.log('/a')
// })

// app.use(function (req, res, next) {
//     console.log('1')
//     next() // 执行next，就会调用下一个函数，打印出2
// })

// app.use(function (req, res, next) {
//     console.log('2')
//     next()
// })

// app.use(function (req, res, next) {
//     console.log('3')
//     res.send('333 end')
// })

// 以 / xxx开头的路径中间件  就是  只要以/a开头的  都可以进来 
// app.use('/b', function (req, res, next) {
//     console.log(req.url)
// })
// app.use('/a', function (req, res, next) {
//     console.log(req.url)
// })


app.listen(3000, function () {
    console.log('app is running at port 3000...')
})
